package com.example.senior_bug.utils;

import com.example.senior_bug.ToolClass.Result;
import com.example.senior_bug.enm.MsgId;
import org.springframework.web.multipart.MultipartFile;

import java.io.File;
import java.util.UUID;

//封装转换获取的图片数据流MultipartFile
public class ImageFileUtils {

    private static String PATH = "/image";

    public static Result ModifyOrAddImage(MultipartFile file) {
        if (file == null) {
            return ResultUtils.error(MsgId.FILE_IS_NULL);
        }
        if (file.getSize() > 1024 * 1024 * 10) {
            return ResultUtils.error(MsgId.FILE_TOO_LARGE);
        }
        //获取文件后缀
        String suffix = file.getContentType().substring(file.getContentType().lastIndexOf("/") + 1, file.getContentType().length());

        if (!"jpg,jpeg,gif,png".toUpperCase().contains(suffix.toUpperCase())) {
            return ResultUtils.error(MsgId.EXTENSION_IS_INCORRECT);
        }

        String savePath = PATH;

        File savePathFile = new File(savePath);
        if (!savePathFile.getParentFile().exists()) {
            //若不存在该目录，则创建目录
            savePathFile.mkdirs();
        }

        //通过UUID生成唯一文件名
        String filename = UUID.randomUUID().toString().replaceAll("-", "") + "." + suffix;

        try {
            //将文件保存指定目录
            file.transferTo(new File("./" + filename));
        } catch (Exception e) {
            e.printStackTrace();
            return ResultUtils.error(MsgId.FILE_EXCEPTION);
        }
        //返回文件名称
        return ResultUtils.success(savePath + "/" + filename);
    }
}
